home *** CD-ROM | disk | FTP | other *** search
/ Freaks Macintosh Archive / Freaks Macintosh Archive.bin / Freaks Macintosh Archives / Ham⁄GPS / IP Folder / HAMradio TCP⁄IP / Docs / MacIP Specs 1.sea / MacIP Specs 1 next >
Text File  |  1993-01-04  |  31KB  |  679 lines

  1. Draft Proposal for the Specification of IP Datagrams transported over 
  2. AppleTalk Networks (MacIP)
  3.  
  4. Status of this Memo
  5.  
  6. This is an initial attempt to document the current "pseudo standard" 
  7. referred to as MacIP.  This document does not attempt to correct any of 
  8. the problems or shortcomings of the protocol and implementations.  It 
  9. simply documents the current state of the art.
  10.  
  11. 1  Introduction
  12.  
  13. The goal of the MacIP architecture is to provide access to TCP/IP-based 
  14. protocols for the Apple Macintosh computers not directly connected to 
  15. Ethernet.
  16.  
  17. Traditionally access to IP protocols from a host computer required a 
  18. direct connection to a high speed network such as Ethernet.  Direct 
  19. Ethernet connection was not possible for the original versions of the 
  20. Macintosh computer.  The early Macintoshes did, however, come equipped 
  21. for LocalTalk, Apple Computer's medium speed network specification.
  22. Every Macintosh comes from the factory with the hardware and software 
  23. necessary to use the LocalTalk network.  There is also a well defined 
  24. set of protocols, AppleTalk [1], which roughly cover the ISO seven layer 
  25. model.
  26.  
  27. This paper describes the present day method of using the existing 
  28. LocalTalk network to transport TCP/IP packets to and from an IP network 
  29. with the aid of a gateway, allowing any Macintosh computer to be a host 
  30. on an IP network.  For the remainder of this paper, the term gateway 
  31. will refer to a device which provides this service.
  32.  
  33. Transporting IP over an AppleTalk Network
  34.  
  35. Transport of IP packets over LocalTalk is achieved by encapsulating them 
  36. in Datagram Delivery Protocol (DDP) datagrams and sending them to a 
  37. gateway for de-encapsulation and delivery to the IP network.  The 
  38. typical gateway is a two port device, with one port on a LocalTalk 
  39. network and one port on an Ethernet.  When the packet is received by the 
  40. gateway's LocalTalk port, the DDP header is stripped and a proper 
  41. Ethernet header prepended.  The packet is then sent out through the 
  42. Ethernet port.  Ethernet-based IP packets bound for a Macintosh on 
  43. LocalTalk go though a similar sequence of events.  The Ethernet header 
  44. is removed and the packet is encapsulated in a DDP datagram and then 
  45. sent to the LocalTalk network.
  46.  
  47. In addition to encapsulation, there are addressing and address 
  48. resolution issues which the gateway must handle on both networks.
  49. This document is purposefully confined to the description of the two 
  50. port gateway, where one port is connected to an AppleTalk network and 
  51. one port is connected to a Ethernet IP network.  Note that the AppleTalk 
  52. port of the gateway does not need to be restricted to LocalTalk as 
  53. AppleTalk may the transported via other media, such as Ethernet.
  54. Address Resolution
  55.  
  56. IP address resolution is required on both sides of the gateway.  On the 
  57. Ethernet side traditional Ethernet Address Resolution Protocol (ARP) is 
  58. required to map an IP addresses to an Ethernet addresses [2].
  59.  
  60. On the AppleTalk side the gateway must  map an IP address to a AppleTalk 
  61. address.  Two methods exist for performing IP address resolution on the 
  62. AppleTalk network.  Each has some advantages over the other, and both 
  63. have been used in different implementations of the MacIP architecture.  
  64. A proper implementation of the gateway should support both.
  65.  
  66. The first method uses the DDP datagram protocol and functions 
  67. essentially like the Ethernet ARP protocol.  This is referred to as DDP 
  68. ARP.  The second method uses the AppleTalk Name Binding Protocol, (NBP).  
  69. It takes advantage of this protocol's ability to span AppleTalk 
  70. networks.  This is referred to as NBP ARP.
  71.  
  72. For historical reasons, DDP ARP should be supported by MacIP gateways, 
  73. although NBP ARP is more widely used, and offers certain advantages, as 
  74. discussed below.
  75.  
  76. 2  Architecture
  77.  
  78. 2.1  Overview of the Current Solution
  79.  
  80. Current implementations of the MacIP architecture provide both a gateway 
  81. and a client/server system between the Macintosh host and the gateway.  
  82. The gateway performs encapsulation and address mapping between the 
  83. AppleTalk and IP networks, as well as various server functions.  The 
  84. architecture requires software on the Macintosh to implement the client 
  85. side of this architecture, as well as the basic IP host functions.
  86. The current implementations provide Macintosh computers with access to 
  87. TCP/IP protocols.  There are also provisions for automatic assignment of 
  88. IP addresses and discovery of well known IP addresses such as name 
  89. servers.
  90.  
  91. 2.2  Encapsulation
  92.  
  93. TCP/IP packets are encapsulated in DDP packets of a special DDP type.  
  94. The source and destination sockets of the packet are specified as a 
  95. special, fixed "MacIP" socket.
  96. The TCP/IP packet is stripped of any media headers and then sent in the 
  97. data portion of the DDP packet described above.
  98. Due to the limited size of AppleTalk DDP packets, the Maximum Transfer 
  99. Unit (MTU) of the AppleTalk network is smaller than that of EtherTalk.  
  100. The smaller MTU size of AppleTalk implies that gateways must fragment 
  101. packets coming from Ethernet which are larger than the AppleTalk MTU.
  102. Some older implementations of MacIP gateways do not fragment large IP 
  103. packets from Ethernet.  They are quietly dropped instead.  This behavior 
  104. is not correct.  All implementations of MacIP on the Macintosh must be 
  105. able to deal with inbound fragmented IP packets.
  106.  
  107. Using DDP versus LLAP
  108.  
  109. As a digression, it is worth discussing why DDP is used as a transport 
  110. instead of the Link layer protocol, LocalTalk Link Access Protocol 
  111. (LLAP), similar to what is done on Ethernet networks.  A solid argument 
  112. can be formed which states that by using LLAP, you could model MacIP, or 
  113. IP on AppleTalk, directly after the evolution of IP on Ethernet.
  114. Taking this approach would lead you to use an ARP nearly identical to 
  115. the ARP used on Ethernet and encapsulate IP packets in a special LAP 
  116. type.
  117.  
  118. While this technique would work fine, these special packets would not be 
  119. "routable" by any normal AppleTalk router.  This limits the IP on 
  120. AppleTalk network to a single wire.  The initial design allowed for 
  121. transport of the encapsulated IP packets over an arbitrary AppleTalk 
  122. network.  Using DDP for transport allows the packets to be routed by any 
  123. AppleTalk router with no knowledge of IP, which makes the system more 
  124. expandable and flexible.
  125.  
  126. 2.3  Addressing
  127.  
  128. A Macintosh host wishing to send an IP packet needs to determine the 
  129. local IP destination address.  A decision is initially made as to 
  130. whether the packet is for this IP network. If it is not (the general 
  131. case for packets from a Macintosh), the local destination IP address is 
  132. set to the gateway's IP address.  Once the local destination IP address 
  133. is determined then address resolution is performed to determine the 
  134. AppleTalk address to which the packet will be sent.
  135.  
  136. It is safe to skip the initial is this packet for my network test and 
  137. simply ARP for the destination IP address, as all of the current gateway 
  138. implementation will proxy ARP for addresses outside of their network 
  139. (i.e. they will reply on behalf  of addresses outside the range of 
  140. addresses assigned to the AppleTalk network).
  141.  
  142. The issue of broadcast address mapping is somewhat ill defined.  It is 
  143. safe, however, to say that encapsulated IP packets destined for the IP 
  144. broadcast address should have the DDP datagram addressed to the LLAP 
  145. broadcast node, 255.
  146.  
  147. Conversely, when receiving encapsulated IP packets sent to the LLAP 
  148. broadcast node, these should be treated as wire level broadcast packets 
  149. and not routed.  It is assumed that this should be a function of the 
  150. AppleTalk and IP router portions of the MacIP gateway.  It follows that 
  151. directed broadcasts should be noticed and handled in the appropriate 
  152. manner [4].
  153.  
  154. 2.4  Address Resolution
  155.  
  156. As noted above, there are two styles of AppleTalk-based IP address 
  157. resolution used by current MacIP implementations.
  158.  
  159. DDP ARP
  160.  
  161. The initial gateway implementations of MacIP used the DDP ARP method.  
  162. This method closely follows the protocol and methodology of Ethernet ARP 
  163. [2].
  164.  
  165. DDP ARP packets are broadcast on the local AppleTalk segment and are not 
  166. routed.  Therefore, the DDP ARP method will only resolve addresses of 
  167. Macintosh hosts on the AppleTalk segment directly connected to the 
  168. gateway.
  169.  
  170. NBP ARP
  171.  
  172. The NBP ARP technique began with the release of Stanford's KIP gateway 
  173. software.  This address resolution technique is a great deal more 
  174. flexible than the DDP ARP technique and allows for dynamic assignment of 
  175. IP addresses.
  176.  
  177. NBP ARP uses the AppleTalk NBP to register IP addresses in the AppleTalk 
  178. name space.
  179.  
  180. When a node (or a gateway) wishes to ARP for an IP address, it simply 
  181. uses the NBP lookup function to look for the IP address.  If the address 
  182. is active, the node which has registered the IP address will 
  183. automatically answer with its AppleTalk address. This completes the ARP 
  184. function and provides a full destination AppleTalk address.
  185.  
  186. It is very important to note that NBP has a concept of named 
  187. administrative domains know as zones.  Names are only guaranteed to be 
  188. unique inside of one zone.  (There is also a shorthand to indicate "this 
  189. zone".)  Because of this there is an implied mapping between the zone of 
  190. which the gateway is a member and the collection of Macintosh based IP 
  191. addresses accessible to the gateway.  This issue is complicated somewhat 
  192. by the issue of forwarding versus subnetting and will be described more 
  193. fully in that section, below.
  194.  
  195. In contrast to DDP ARP, which is restricted to one AppleTalk wire due to 
  196. its use of local broadcasts, NBP ARP can reach Macintoshes on other 
  197. AppleTalk networks.  The NBP protocol has provisions for propagating NBP 
  198. requests through gateways.  As long as a node is in the same NBP zone as 
  199. the gateway, the NBP ARP method will properly resolve addresses.
  200.  
  201. Additionally, using NBP ARP creates an object which is visible to all 
  202. native AppleTalk devices, which can aid diagnostics.  Finally, employing 
  203. the NBP protocol's provisions for registration, and lookups for multiple 
  204. objects with one request makes dynamic address assignment possible.
  205.  
  206. 2.5  Gateways
  207.  
  208. The MacIP Gateway provides several functions in the gateway process.  In 
  209. addition to sending packets back and forth between the two networks and 
  210. supporting address translation, or ARP, it provides a simple server 
  211. function for distributing important IP addresses and assigning IP 
  212. addresses to Macintosh hosts.
  213.  
  214. Macintosh hosts use the NBP protocol to discover a MacIP gateway.  The 
  215. gateway registers a Network Visible Entity (NVE) of type "IPGATEWAY", 
  216. using its IP address in dot notation as its object name.  When a 
  217. Macintosh wants to access a MacIP gateway service, it performs a lookup 
  218. for all NVEs of type "IPGATEWAY".  Generally only one gateway will 
  219. respond and the Macintosh will record its AppleTalk address for future 
  220. use.
  221.  
  222. As an implementation note a Macintosh should be able to perform this 
  223. "gateway lookup" at any time, as the gateway may go down and reappear at 
  224. a difference AppleTalk address.  A good technique would be to lookup the 
  225. gateway anew whenever the gateway does not answer.  (This would be 
  226. indicated by an error at the DDP level when using LocalTalk.)
  227.  
  228. The MacIP gateway implements an AppleTalk Transaction Protocol (ATP) 
  229. based protocol for performing simple functions.  There are two currently 
  230. defined functions which this protocol.  These are get server info and 
  231. assign IP address.
  232.  
  233. The get server info function returns a list of common server IP 
  234. addresses, such as name server, file server and the broadcast address.  
  235. These are defined as part of the gateway's configuration and simply 
  236. passed on via the protocol without interpretation.
  237.  
  238. The assign IP address function returns an IP address which can be used 
  239. by the Macintosh host to communicate with other IP hosts.  The gateway 
  240. is configured with a range of addresses for dynamic assignment and 
  241. maintains a table of these assigned addresses, periodically checking 
  242. that they are still in use.  Assigned addresses are maintained for a 
  243. period of time so that if a Macintosh is rebooted and asks for an 
  244. address again, it will receive the same IP address.
  245.  
  246. It is important to note that IP addresses assigned via the gateway ATP 
  247. protocol must be registered and resolved using the NBP ARP technique.  
  248. The DDP ARP technique is only valid for use with statically assigned IP 
  249. addresses, as there is no protocol for registration or determining  
  250. which addresses are assigned.
  251.  
  252. 2.6  TCP/IP Code on the Macintosh
  253.  
  254. *** TO BE WRITTEN ***
  255.  
  256. 3  Protocol
  257.  
  258. 3.1  Encapsulation Technique
  259.  
  260. TCP/IP packets are encapsulated in DDP packets of type 22 (decimal).  
  261. The source and destination sockets of the packet are 72 (decimal) by 
  262. convention.  There is no requirement as to the use of short or long 
  263. headers.  The packets can be run over any valid AppleTalk media, 
  264. including Ethernet.
  265.  
  266. When encapsulating a packet bound for AppleTalk, the TCP/IP packet is 
  267. stripped of any media headers and then sent as the data portion of the 
  268. DDP packet.
  269.  
  270. The AppleTalk DDP protocol limits the data size of a DDP packet to 586 
  271. bytes, which is then the MTU of the AppleTalk network when transporting 
  272. IP datagrams.
  273.  
  274. The Ethernet network has an MTU size of 1486 bytes.  The smaller MTU 
  275. size of AppleTalk implies that gateways must fragment Ethernet packets 
  276. bound for AppleTalk which are larger than the AppleTalk MTU [3].
  277. ^A
  278. 3.2  Addressing Styles
  279.  
  280. The original SEAGate gateway and several early versions of the FastPath 
  281. gateway code provided access to the Ethernet IP network by treating the 
  282. AppleTalk network as an IP subnet [6, 7].
  283.  
  284. The KIP code does not form a subnet but rather forwards IP packets to 
  285. and from the Ethernet using proxy ARP.
  286.  
  287. There are two alternative approaches to integrating an AppleTalk network 
  288. into an IP network.  One approach involves treating the AppleTalk 
  289. network as an IP subnet, with the MacIP gateway assuming the role of  an 
  290. IP  router.  The alternative is to allocate a small range of addresses 
  291. from the IP network to the AppleTalk network.  In this case, the MacIP 
  292. gateway forwards IP packets to and from AppleTalk.
  293.  
  294. The forwarding method is conceptually easier, and, thus, simpler to 
  295. configure.  No large range of subnet addresses needs to be calculated 
  296. and allocated to the AppleTalk network.
  297.  
  298. The subnetting method is more difficult conceptually and, hence, harder 
  299. for a novice to configure.  It is, however,  more consistent with the 
  300. requirements of many large sites, and can be more practical in 
  301. complicated networks.  This is especially true if the MacIP gateway will 
  302. emit Routing Information Protocol (RIP, [5]) packets to inform the 
  303. Ethernet network of the MacIP AppleTalk subnet.
  304.  
  305. Subnetting
  306.  
  307. Subnetting via the MacIP protocol is straightforward from the 
  308. perspective of IP routing.  The gateway has two IP addresses (one for 
  309. each port M-P Ethernet and AppleTalk) and defines the AppleTalk network to 
  310. be a subnet of the IP network.  This definition is done with a network 
  311. number and a subnet mask.
  312.  
  313. According to the defined IP gateway specification [4] the MacIP gateway 
  314. should only answer ARP requests for its own IP address.  No proxy ARP 
  315. function should be performed.  This requires that the TCP/IP hosts on 
  316. both sides of the gateway be informed of the gateway's presence.  This 
  317. can be done via static routing tables or via the RIP protocol.  A 
  318. conservative RIP implementation1 in the MacIP gateway is recommended for 
  319. this function.
  320.  
  321. Forwarding
  322.  
  323. When forwarding with the MacIP architecture, the AppleTalk network is 
  324. treated as an extension of the Ethernet IP network.  This is done by 
  325. specifying a range of IP addresses which are allocated to the AppleTalk 
  326. network, and to which the MacIP gateway will "forward" packets from the 
  327. Ethernet.  When a host on the Ethernet ARPs for an IP address which is 
  328. in this range, the gateway will answer, performing the proxy ARP 
  329. function.  When a host on the AppleTalk ARPs for an IP address outside 
  330. of the range, the a gateway will reply to the ARP, again performing the 
  331. proxy ARP function.  The address resolution on AppleTalk can be done 
  332. using the NBP or DDP technique.  Dynamic assignment of IP addresses on 
  333. the AppleTalk side can be accomplished with the gateway ATP protocol; 
  334. see below.
  335.  
  336. 3.3  Address Resolution Styles
  337.  
  338. DDP ARP
  339.  
  340. DDP ARP uses the same packet definition as Ethernet ARP but defines a 
  341. new hardware address type, and uses DDP for transport.  This new address 
  342. type is four (4) bytes long and is comprised of a concatenated AppleTalk 
  343. network number (2 bytes), node number (1 byte), and socket (1 byte).
  344. The mechanics of the ARP transaction using DDP are the same as those on 
  345. Ethernet.  This implies that the gateway function also contains an cache 
  346. of resolved address translations.
  347.  
  348. NBP ARP
  349.  
  350. As stated above, NBP ARP uses the AppleTalk NBP protocol.  Each active 
  351. IP address on the AppleTalk is registered as an NVE.  Its existence can 
  352. be queried and uniqueness guaranteed and defended using the simple 
  353. protocol defined by NBP.
  354.  
  355. When registering a name and type with NBP a check is made for duplicate 
  356. registrations on the network.  Having determined no duplicates exist, 
  357. NBP then will defend against future registrations of the same name.  
  358. This "atomic" attribute of NBP guarantees the uniqueness of IP addresses 
  359. registered this way.
  360.  
  361. When a host has decided what its IP address will be, it registers this 
  362. address as an ASCII name comprised of the IP address in its printed 
  363. form, using dot notation (i.e., "192.45.17.1").  Each NVE also has a 
  364. type defined by an ASCII string.  The registered IP addresses have the 
  365. type "IPADDRESS".
  366.  
  367. Mapping a Zone to an IP Subnet
  368.  
  369. The NBP ARP method implies a relationship between the group of IP 
  370. addresses which reside on the AppleTalk network and the zone name of the 
  371. LocalTalk network connected to the gateway.
  372.  
  373. The implied relationship between the LocalTalk network's zone name and 
  374. the IP subnet can be exploited to implement directed broadcasts.  If the 
  375. gateway receives a directed broadcast for the IP subnet, it could send 
  376. it out as a directed broadcast to each network in the zone, in the same 
  377. manner as NBP handles an NBP bridge request.  If the gateway is 
  378. forwarding, any IP broadcasts on the Ethernet could be forwarded in the 
  379. same manner.
  380.  
  381. Using a Gateway From Another Zone
  382.  
  383. Because the gateway uses NBP to register itself, it is possible to look 
  384. for a gateway in any zone.  If Macintosh is in zone A, it can look for a 
  385. gateway in zone B and then communicate with this gateway via the gateway 
  386. ATP protocol.  This will allow the Macintosh to obtain an IP address and 
  387. communicate with the gateway.
  388.  
  389. The gateway maintains its table of assigned dynamic addresses by 
  390. periodically sending out NBP confirm requests.  These requests are send 
  391. directly to the host which was assigned the address.  Macintosh hosts 
  392. which are in a different zone than the gateway will respond correctly to 
  393. these confirm requests, and hence keep their address assignments alive.
  394. While this allows a Macintosh in a different zone to use a MacIP 
  395. gateway, it breaks the relationship between the zone name and the 
  396. assigned IP addresses.  A second Macintosh, within the zone, might 
  397. attempt to ARP for this out-of-zone machine M-P or, far worse, attempt to 
  398. claim the same IP address, yet the first Macintosh would not see the NBP 
  399. lookups.  Although this may work for communication with non-AppleTalk IP 
  400. hosts, it will not allow future enhancement to take advantage of the 
  401. "zone to subnet/forward group" relationship.
  402.  
  403. 3.4  Dynamic IP Address Assignment
  404.  
  405. Dynamic IP address assignment is accomplished in the MacIP protocol by 
  406. designating the gateway as an IP address server.  The MacIP gateway is 
  407. given the task of handing out IP addresses to Macintosh hosts and 
  408. maintaining a table of assigned addresses.
  409.  
  410. Having located the MacIP gateway, the Macintosh host requests an IP 
  411. address.  The gateway responds with an address if one is available.  If 
  412. no addresses are available (generally because they are all in use) the 
  413. gateway responds with an error.  If an address is successfully obtained, 
  414. it is then the responsibility of the Macintosh to attempt to register 
  415. this address with NBP.
  416.  
  417. In order to properly maintain the table of assigned addresses, the 
  418. gateway periodically sends out an NBP lookup for all objects of type 
  419. "IPADDRESS".  Responses are matched against entries in the table.  
  420. Responses not found in the table are added, allowing for static 
  421. assignment of addresses within the range.  Entries in the table for 
  422. which no responses are received are aged and eventually time out and are 
  423. removed.
  424.  
  425. When the gateway is first started, an initial lookup is done to prime 
  426. the table with any existing assignments.  Note that since DDP ARP has no 
  427. protocol for performing the same operation, it is not appropriate for 
  428. use with dynamic IP address assignment.
  429.  
  430. In an implementation of a MacIP gateway, the table of assigned IP 
  431. addresses can be used to support the ARP function.
  432.  
  433. 3.5  The Gateway ATP Protocol
  434.  
  435. The Gateway ATP Protocol is a simple request-response protocol based on 
  436. the AppleTalk ATP protocol.  It can be supported without a requiring 
  437. full ATP implementation.
  438.  
  439. ATP requests are done using the exactly once, or "XO" type transaction.  
  440. It is not necessary for the gateway to completely implement the "XO" 
  441. semantic.  Macintosh hosts should, however use it when making requests.
  442. The user data portion of the ATP request is not used.  Instead, the 
  443. first four (4) bytes of the request data form a long-word integer 
  444. request number.  The byte ordering of the value is big-endian (most 
  445. significant byte first).  The response packet is a structure consisting 
  446. of a sequence of four (4) byte integers, followed by a byte array 
  447. containing ASCII error text.  The byte ordering of the integers in the 
  448. response packet is also big-endian.  The ASCII error text is only valid 
  449. if the return code is negative when interpreted as a signed, 32 bit 
  450. quantity.
  451.  
  452. 3.6  A Sample Transaction Stream
  453.  
  454. Below is a sample "transaction stream" designed to illustrate the use of 
  455. the gateway ATP protocol and the use of NBP to perform the ARP function 
  456. on AppleTalk.
  457.  
  458. Overview:
  459.  
  460. A Macintosh host wishes to find a MacIP gateway, obtain an IP address 
  461.  
  462. Received: from iggppserv.igg.tno.nl by iggcis1.igg.tno.nl (4.1/SMI-4.1)    id AA16360; Wed, 30 Dec 92 05:12:12 +0100
  463. Received: by iggppserv.igg.tno.nl (4.1/SMI-4.1)    id AA23502; Wed, 30 Dec 92 05:12:12 +0100
  464. Resent-Date: Tue, 29 Dec 1992 19:37:11 -0800
  465. Resent-From: root@iggppserv (System Manager)
  466. Resent-Message-Id: <9212300412.AA23502@iggppserv.igg.tno.nl>
  467. Resent-To: adam@iggcis1.tno.nl
  468. Return-Path: <dewayne@netcom.com>
  469. Received: from ITI.TNO.NL (tnoit1) by iggppserv.igg.tno.nl (4.1/SMI-4.1)    id AA23455; Wed, 30 Dec 92 05:06:10 +0100
  470. Received: from TNO.NL by ITI.TNO.NL; Wed, 30 Dec 92 04:54 MET
  471. Received: from HEARNVAX.nic.SURFnet.nl by TNO.NL; Wed, 30 Dec 92 04:37 MET
  472. Received: from netcom.netcom.com by HEARNVAX.nic.SURFnet.nl with PMDF#10216; Wed, 30 Dec 1992 04:39 MET
  473. Received: from netcom.netcom.com by netcom.netcom.com (5.65/SMI-4.1/Netcom) id AA23360; Tue, 29 Dec 92 19:35:57 -0800
  474. Date: Tue, 29 Dec 1992 19:37:11 -0800
  475. From: dewayne@netcom.com
  476. Subject: MacIP Spec
  477. To: adam@IGG.tno.nl
  478. Message-Id: <9212300335.AA23360@netcom.netcom.com>
  479. X-Sender: dewayne@netcom.com (Unverified)
  480. X-Attachments: :Macintosh HD:663:MacIP_Spec_#0.4.txt:
  481. X-Envelope-To: adam@IGGPPSERV
  482. Status: RO
  483.  
  484. from that gateway and open a TCP session with a host on Ethernet.
  485.  
  486.     Macintosh                Gateway
  487. Step 1:
  488. Perform NBP Lookup for object "=" (wildcard), type "IPGATEWAY".
  489. Answers lookup with object "192.31.222.1", the gateway's IP address.
  490. Step 2:
  491. Send gateway ATP transaction get server info to gateway.
  492. Respond with IP addresses as configured.
  493. Step 3:
  494. Send gateway ATP transaction assign IP address to gateway.
  495. Look in table of assigned addresses, using source AppleTalk address as 
  496. key.  If entry found, respond with previously assigned address.  If no 
  497. entry found, create new entry and assign new IP address.  Respond.
  498. Step 4:
  499. Register assigned address as an NBP NVE, the  object being the IP 
  500. address in "dot-notation", and with type "IPADDRESS".
  501. Step 5:
  502. IP code wants to send TCP SYN to IP address 18.1.1.1;  Either default to 
  503. 18.1.1.1 as destination IP or decide that gateway is destination IP.
  504. Perform NBP ARP for destination address, type "IPADDRESS".
  505. Respond to ARP for either gateway's IP address or proxy ARP for true 
  506. destination address.
  507. Step 6:
  508. Encapsulate TCP SYN in DDP packet and send to gateway.
  509. Remove DDP header, add Ethernet header, perform Ethernet ARP function, 
  510. if appropriate, and send packet on Ethernet
  511. Destination host (18.1.1.1) responds with SYN.  Remove Ethernet header, 
  512. add DDP header, perform ARP function for destination address.  Send DDP 
  513. header.
  514. The last few steps are performed repeatedly.
  515.  
  516. 3.7  Closure: Why It Works
  517.  
  518. Bill Croft described the NBP ARP technique in the documentation which is 
  519. included with the KIP source code.
  520.  
  521. Lookups at gateway startup time
  522.  
  523. When the MacIP gateway starts up, it does an initial lookup for all 
  524. objects of type "IPADDRESS".  If any responses are received, they are 
  525. added to a table of assigned addresses.  In this way the gateway 
  526. recovers any state which may be lost if the gateway crashes or is 
  527. restarted.
  528.  
  529. Defending addresses
  530.  
  531. When a Macintosh is dynamically assigned an address or wishes to use a 
  532. statically assigned one, it first attempts to register its address using 
  533. NBP.  This operation has two effects.  First, it determines that the 
  534. address is not currently in use.  Then, it secures the use of this 
  535. address ensuring the Macintosh's NBP software will respond to any 
  536. lookups for this address by other nodes which may be performing the same 
  537. operation.  This sequence is equivalent to an atomic test and set 
  538. operation to ensure that addresses are only in use by one Macintosh at 
  539. one time.
  540.  
  541. 4  History
  542.  
  543. 4.1  The Original "SEAGate" Gateway code
  544.  
  545. The first "AppleTalk-to-Ethernet" gateway was created at Stanford 
  546. University around 1985 and was known as the M-TStanford Ethernet AppleTalk 
  547. Gateway", or SEAGate.  It was comprised of a Multibus backplane, a 68000 
  548. CPU card and a simple LocalTalk (then known as "AppleBus") interface 
  549. card.
  550.  
  551. The SEAGate source code and design documents were freely available to 
  552. members of the Internet community.  The initial design provided for 
  553. simple transport of encapsulated IP datagrams from AppleTalk-based 
  554. Macintosh computers to Ethernet based IP hosts.  The DDP ARP protocol 
  555. was used and gateway configuration was simple and primitive.
  556.  
  557. A port of the MIT PC/IP code (a TCP/IP implementation for IBM PCs) to 
  558. the Macintosh was made by several people at Dartmouth College.  The 
  559. first application was a simple Telnet application.
  560.  
  561. The initial Kinetics FastPath was essentially a commercialized version 
  562. of the Stanford SEAGate and ran modified SEAGate gateway code.  The 
  563. initial FastPaths were shipped with the Dartmouth Telnet application.
  564.  
  565. 4.2  The "KIP" Gateway Code
  566.  
  567. The original KIP software was an enhanced version of the original 
  568. SEAGate software.  Over time it was enhanced and gained the ability to 
  569. do AppleTalk routing and encapsulation of AppleTalk packets inside UDP 
  570. datagrams.
  571.  
  572. The KIP software also added the ability to do centralized administration 
  573. of multiple gateways.  This, combined with the ability to transport 
  574. AppleTalk packets to UNIX hosts by encapsulating them in UDP packets 
  575. gave rise to an AppleTalk implementation for UNIX known as the Columbia 
  576. AppleTalk Package, or CAP software.  This software currently allows both 
  577. file sharing and printing to and from UNIX hosts and Macintosh 
  578. computers.
  579.  
  580. 4.3  NCSA's TCP/Telnet Software
  581.  
  582. The National Center for Super Computer Application (NCSA) has put into 
  583. the public domain a Macintosh application which contains an 
  584. implementation of TCP/IP which supports the MacIP protocol.  This 
  585. application was designed to be a terminal emulation program supporting 
  586. the TELNET protocol allowing terminal access to TCP/IP host computers.
  587.  
  588. The NCSA TCP/Telnet software supports static and Gateway based 
  589. assignment of IP addresses, using the gateway ATP protocol.  Both NBP 
  590. and DDP ARP are supported.
  591.  
  592. This is currently the most widely distributed version of MacIP software 
  593. and is available in source form.
  594.  
  595. InterCon, Inc. of Reston, Va. has made a greatly enhanced version of the 
  596. this software (TCP/Connect) available as a commercial application.
  597.  
  598. 4.4  Apple's MacTCP driver
  599.  
  600. Full Featured IP/UDP/TCP
  601.  
  602. Apple released V1.0 of the MacTCP drivers which provide TCP/IP protocols 
  603. for Macintosh computers.  This software provides a consistent 
  604. application interface to the TCP/IP software layer and moves the 
  605. protocol software out of the Applications and into the Macintosh system 
  606. software.
  607.  
  608. In addition to the basic TCP and UDP services, basic Domain Name System 
  609. (DNS) resolver capabilities are supplied.
  610.  
  611. Supports Gateway ATP Protocol and NBP ARP
  612.  
  613. The MacTCP drivers support a portion of the MacIP protocol.  This allows 
  614. Macintosh computers to communicate with TCP/IP hosts via the AppleTalk 
  615. network.
  616.  
  617. The V1.0 MacTCP drivers support the gateway ATP protocol as well as the 
  618. NBP ARP protocol.  Static and Gateway (server) based address assignment 
  619. (via the gateway protocol) are supported.  No support is available for 
  620. the older DDP ARP protocol.
  621.  
  622. 5  Definitions
  623.  
  624. 5.1  AppleTalk Protocol constants
  625.  
  626. MacIP MTU                        516 bytes
  627. DDP constants
  628.     MacIP packet type                22 (decimal)
  629.     DDP ARP packet type            23 (decimal)
  630. DDP ARP constants
  631.     AppleTalk address type            3 (decimal)
  632. NBP constants
  633.     gateway object type            IPGATEWAY
  634.     registered IP address object type        IPADDRESS
  635.  
  636. 5.2  Gateway ATP Protocol Constants
  637.  
  638. ATP request command codes
  639.     ASSIGN    assign IP address        1
  640.     NAME    name server        2 (obsolete)
  641.     SERVER    get server info        3
  642. ATP response codes
  643.     SUCCESS                    same as request code
  644.     ERROR                    -1
  645.  
  646. 6  Acknowledgements
  647.  
  648. Bill Croft - documents provided with the KIP code
  649. Gauge Paulson and Tim K. - NCSA source code
  650. John Romkey - original PC/IP source code
  651. Tim Maroney and ? - port of PC/IP to Macintosh
  652.  
  653. References
  654.  
  655. [1]    Sidhu, G., Andrews, R., and Oppenheimer, A., Apple Computer, 
  656. Inside AppleTalk, Addison-Wesley Publishing Company, Inc., Reading, MA, 
  657. 1989.
  658.  
  659. [2]    Plummer, D., "An Ethernet Address Resolution Protocol", RFC-826, 
  660. Symbolics, September 1982.
  661.  
  662. [3]    Postel J., "Internet Protocol", RFC-791, USC Information Sciences 
  663. Institute, September 1981.
  664.  
  665. [4]    Brandon, R., and Postel, J., "Requirements for Internet Gateways", 
  666. RFC-1009, USC Information Sciences Institute, June 1987.
  667.  
  668. [5]    Hendrick, C., "Routing Information Protocol", RFC-1058, June 1988.
  669.  
  670. [6]    Mogul, J., "Internet Subnets", RFC-917, Stanford University, 
  671. October 1984.
  672.  
  673. [7]    Mogul, J., and Postel, J., "Internet Standard Subnetting 
  674. Procedure", RFC-950, Stanford University, August 1985.
  675.  
  676. 1 In a conservative RIP implementation only the AppleTalk side of the 
  677. gateway should be advertised.  No routing information obtained via RIP 
  678. should be propagated.
  679.